iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

Connect database

因爲我們後端是用 django,所以我們要用 python 來操作 MongoDB,MongoDB 官方推薦的 python driver 是 pymongo,首先來安裝

pip install pymongo

在想使用的檔案內加入

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")

myclient = pymongo.MongoClient("mongodb://localhost:27017/") 是用來連接資料庫,還有其他種寫法,不過我們之後還要做資料庫複制、資料庫身份驗證,資料路加密等等,這種寫法之後會比較好更改

basic operation

接下來來介紹常用的基本操作,以我的經驗來講,應該大部分時間都是在用這些,其他進階功能都是偶爾用一下

首先來連接一個 db 和 collection 再繼續接下來的教學

mydb = myclient['database']
mycol = mydb['collection']

find

mycol.find({'name':'John'})

這個方法會返回所有 name 叫做 John 的 document,比方說我們有三筆資料如下

{
  'name':'John',
  'height':176
},
{
  'name':'John',
  'height':180
},
{
  'name':'David',
  'height':175
},

mycol.find({'name':'John'}) 便會返回

[
  {
    'name':'John',
    'height':176
  },
  {
    'name':'John',
    'height':180
  }
]

這兩筆資料,以陣列的形式

find_one

mycol.find_one({'name':'David'})

這個方法就只會返回符合條件的第一筆資料,通常是用在符合這個條件的資料只有一筆,像我有一個專案是要操作機房內的多台 server 去跑測試,資料庫這邊有一個 collection 是去記錄各個 server 的設定,每個 document 都是對應唯一的 server,使用時就像這樣

mycol.find_one({'server':'server4'})

find_one_and_update

再來是更改資料,比方說要更改資料庫上記錄 server 的 document 的資料

mycol.find_one_and_update({'server':'server4'}, {'$set':{'ip':'172.21.1.64'}})

第一個參數是查詢條件,{'$set':{'ip':'172.21.1.64'}} 是去設定 ip 這個資訊改成 172.21.1.64

find_one_and_delete

新增和更改資料都有了,接下來講刪除

mycol.find_one_and_delete({'name':'David'})

count_documents

有時候我們會想知道到底在這個 collection 內有多少資料,或者在這個 collection 內符合這個查詢條件的資料有多少

mycol.count_documents({})

這樣就可以知道在這個 collection 內有多少資料了


上一篇
MongoDB Compass
下一篇
MongoDB: 更有技巧的查詢資料方法
系列文
Vue+Django+MongoDB+Nginx 全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言